﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

namespace Sgr.Domain.Uow.Database
{
    /// <summary>
    /// 数据库事务操作接口
    /// </summary>
    /// <remarks>
    /// 该接口定义了数据库事务的基本操作：
    /// 1. 提供异步事务提交功能
    /// 2. 继承自IDisposable接口，确保事务资源的正确释放
    /// 3. 用于工作单元(UnitOfWork)中的事务管理
    /// </remarks>
    public interface ITransactionApi : IDisposable
    {
        /// <summary>
        /// 异步提交事务
        /// </summary>
        /// <param name="cancellationToken">取消令牌</param>
        /// <remarks>
        /// 执行事务提交操作，将事务中的所有更改永久保存到数据库
        /// </remarks>
        /// <returns>表示异步操作的任务</returns>
        Task CommitAsync(CancellationToken cancellationToken = default);
    }
}